草庐IT

c++ - 包装第 3 方 DLL

全部标签

c - 在 C 中生成进程的简单代码崩溃。为什么?

以下程序崩溃。我做错了什么?#include#includeintmain(){puts("Hello!");returnspawnlp(0,"notepad.exe","notepad.exe","test.txt");} 最佳答案 您缺少作为参数列表的一部分传递的终止NULL。如果没有那个终止符,参数列表的末尾将是未知的,系统将继续读取,这会导致undefinedbehavior由于访问无效的内存位置。 关于c-在C中生成进程的简单代码崩溃。为什么?,我们在StackOverflow

c++ - 从 dll 函数调用中正确获取 Windows 版本?

假设我正在编写一个包含获取操作系统版本的函数的多用途dll:voidget_os_version(DWORD*major,DWORD*minor){OSVERSIONINFOEXosvi;ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));osvi.dwOsVersionInfoSize=sizeof(OSVERSIONINFOEX);//deprecatedbuteasiertouseforthisexample'ssakeGetVersionEx((OSVERSIONINFO*)&osvi);*major=osvi.dwMajorVersion;*m

c - 如何在 C (Windows) 中打印方框字符

如何在C中打印em破折号?其中之一:—每当我这样做时:printf("—")我只会在终端中得到一个ù。谢谢。编辑:下面的代码应该打印出一个Xs和Os外观的网格,水平线带有em破折号。intmain(){chargrid[3][3]={{'a','a','a'},{'a','a','a'},{'a','a','a'}};inti,j;for(i=0;i输出:(“ù”应该是“—”)a|a|aùùùùùùùùùùùùa|a|aùùùùùùùùùùùùa|a|a编辑:我在Windows10x64上使用Codeblocks16.01和C11。编辑:我被告知方框字符,问题已经演变为如何打印这些字符

c - wchar 和注册表项的问题

所以我想向注册表添加一个字符串,因为注册表字符串以NULL结尾,我的字符串在各个地方都包含一个空字符。这是我的字符串的样子。charnames[550]="1DFA-3327-*\01DFA-3527-*\001DFA-E527-*\00951-1500-我像这样将其转换为whcar_t字符串。wchar_tnames_w[1000];size_tcharsConverted=0;mbstowcs_s(&charsConverted,names_w,names,SIZE);RegSetValueEx(*pKeyHandle,valueName,0,REG_MULTI_SZ,(LPBYT

c++ - 从已编译的应用程序创建 Windows 服务

我想使用MicrosoftVisualStudio2015从我编译的C/C++代码创建一个服务。我编译了我的代码并使用来自应用程序可执行文件的sc.exe创建了一个服务。我的代码由一个无限循环组成,它在时间间隔内将一个简单的字符串写入一个静态文件。创建服务并重启后,服务似乎自动停止了。直接运行时可执行文件工作正常。代码如下:#include"stdafx.h"#include#include#includeusingnamespacestd;voidwrite_txt_file(stringfile_name,stringinput){/*writeastringtoaspecific

c - Windows API MoveFile() 不适用于运行 exe

这里有一个简单的C程序来说明:#include#includeintmain(intargc,char*argv[]){//MoveFile(argv[0],"dst.exe");getchar();return0;}根据上面的代码制作一个test.exe。现在执行test.exe,test.exe由于getchar()卡在那里,然后我可以自由地剪切和粘贴这个exe。但是当我取消对MoveFile(argv[0],"dst.exe");的注释时,我希望它可以将自己移动到dst.exe,结果它有一个dst。exe,而program.exe仍然存在,就像CopyFile()一样。据我所知,

c - 在 Windows 和 *nix 系统上解析共享库路径

当加载给定名称的共享库时,系统会根据搜索顺序或在缓存中搜索某些目录中的实际文件(例如.dll)。如何以编程方式获取给定名称的DLL的解析路径,但不实际加载它?例如。在Windows上,对于kernel32或kernel32.dll它可能会返回C:\windows\system32\kernel32.dll而给定foo它可以是C:\ProgramFiles\my\app\foo.dll。如果做不到,是否有另一种方法来确定某个库是否属于系统?例如。user32.dll或libc.so.6是系统库,但avcodec-55.dll或myhelperslib.so不是。我对适用于Windows、

c++ - 在全局变量的初始化/取消初始化中使用隐式加载的 DLL 中的函数

考虑一个使用导入库logging.lib的Windows程序,这样logging.dll将在运行时自动加载/卸载。另外,考虑主程序的翻译单元之一定义类类型的全局变量,如下所示:structInitGuard{InitGuard(){logging::initialize();}~InitGuard(){logging::deinitialize();}};InitGuardg_initGuard;除了更好的方法是在函数main中实例化InitGuard之外:是否保证logging.dll在调用InitGuard的c'tor时已经加载?更重要的是,是否保证logging.dll在Init

c++ - 包装第 3 方 DLL

我有一个需要使用LoadLibrary()动态加载并使用__cdecl调用约定的第3方DLL。我需要能够使用VB6中的dll,因此我创建了一个我自己的包装器DLL,它使用__stdcall调用约定并导出所需的函数。现在有一个额外的要求,我正在努力寻找如何管理;包装的DLL为另一个应用程序提供了一个API,我需要同时连接到该应用程序的两个实例。这是一个问题,因为DLL没有session的概念,典型的交互如下所示:tpc_connect("service1")//Dosomestufftpc_disconnect()我需要做的是session1=tpc_connect("service1"

类似 SQL 的 Windows 注册表包装器?

在处理大量数据时,更新注册表的每个键处理似乎有点差。是否有任何库将所有键都视为表并允许以更具编程性的方式进行插入、更新或选择? 最佳答案 如果你想做脚本,windowspowershell有一些非常漂亮的registryaccess.它像处理文件系统一样处理注册表。 关于类似SQL的Windows注册表包装器?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/930258/